package cn.sinobest.pid.common.jdbc.inter;

import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.lob.LobHandler;


/**
 * jdbc服务接口
 * @author wuxinxue
 * @copyRight sinobest
 * @time 2016-3-2 下午5:52:59
 */
public interface IJdbcService {
	
	public static final String	BEAN_NAME_OF_DEFAULT_IMPL	= "appJdbcService";
	
	public JdbcTemplate getJdbcTemplate();
	
	public LobHandler getLobHandler();
	/**
	 * 分页查询
	 */
	public List pagedQuery(String sql, Object[] args, int[] argsType,
			int pageNum, int pageSize);

	/**
	 *更新
	 */
	public int update(String sql, Object[] args, int[] argsType);

	/**
	 * 分页查询
	 * @param sql
	 * @param args
	 * @param argsType
	 * @param startIndex
	 * @param lastIndex
	 * @return
	 */
	public List queryPage(String sql, Object[] args, int[] argsType,
			int startIndex, int lastIndex);
	
	public <T> List<T> queryPage(String sql, Object[] args, int[] argsType,
			int startIndex, int lastIndex, Class<T> elementType);
	/**
	 * ���ڷ�������������Ĳ���?
	 * 
	 * @param sql
	 *            ��sql���?
	 * @param args
	 *            ������
	 * @param argsType
	 *            ����������
	 * @return
	 */
	public int getCntQuery(String sql, Object[] args, int[] argsType);

	/**
	 * �ҵ�������
	 */
	public Map queryForSingle(String sql, Object[] args, int[] argsType);

	/**
	 * ����?�ز��ҽ��?
	 */
	public List queryForList(String sql,Object[] args, int[] argsType);
	
	public List queryForList(String sql);
	
	public <T> List<T> queryForList(String sql, Object[] args, Class<T> elementType);
	
	/**
	 * ����?�ز��ҽ��?
	 */
	public <T> List<T> queryForList(String sql, Object[] args, int[] argsType, Class<T> elementType);

}
